#include <iostream>
//饿汉模式（以空间换时间）
// class singleton{
// private:
//     singleton()
//     :_data(129)
//     {
//         std::cout << "单例对象实例化成功！" << std::endl;
//     }

//     singleton(const singleton&) = delete;

//     ~singleton(){}

// private:
//     static singleton _eton;
//     int _data;

// public:
//     static singleton& getsingleton()
//     {
//         return _eton;
//     }

//     int getdata()
//     {
        
//         return _data;
//     }
// };

// singleton singleton::_eton;

// int main()
// {
//     std::cout << singleton::getsingleton().getdata() << std::endl;
//     return 0;
// }


//懒汉模式

class Singleton{
private:
    int _data;
private:
    Singleton()
    :_data(625)
    {
        std::cout << "懒汉模式单例对象构造成功！" << std::endl;
    }

    Singleton(const Singleton& ) = delete;

    ~Singleton()
    {

    }

public:
    static Singleton& GetInStance()
    {
        static Singleton _eton;
        return _eton;
    }

    int GetData()
    {
        return _data;
    }
    
};


int main()
{
    std::cout << Singleton::GetInStance().GetData() << std::endl;
    return 0;
}